热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

论文阅读|BOAT

BOAT:BilateralLocalAttentionVisionTransformer代码目录AbstractIntroductionMethodPatchembe

BOAT: Bilateral Local Attention Vision Transformer

代码

目录

Abstract

Introduction

Method

Patch embedding

Hierarchical pyramid structure

3.1 Bilateral Local Attention Block

3.2 Feature-Space Local Attention

Balanced hierarchical clustering

Balanced binary clustering

Local attention within cluster

Experiments

Image Classification

Semantic Segmentation

Object Detection

Conclusion 


Abstract

vision transformer在许多计算机视觉任务中都取得了优异的表现。早期的Vision transformer,如ViT和DeiT,采用全局自我关注,当patch数量很大时,这种方法的计算成本很高。为了提高效率,最近的Vision transformer采用了局部自我注意机制,其中self-attention是在局部窗口内计算的。尽管基于窗口的局部自我注意显著提高了效率,但它不能捕捉图像平面上距离较远但相似的patch之间的关系。(因为一个 token 很可能与空间上邻近的 token 相关联。因此,局限于局部窗口的自注意力很可能不会显著降低性能,但是可以显著降低计算量)。为了克服图像空间局部注意的局限性,本文进一步利用特征空间中的局部性。我们利用patch的特性将其分组成多个group,在每个group内进行自我关注计算。这种基于特征空间局部关注有效地捕获了跨不同本地窗口的patch之间的连接,但仍然是相关的。

我们提出了一种双边局部注意vison transformer( Bilateral lOcal Attention vision Transformer BOAT),它集成了特征空间的局部注意图像空间的局部注意。我们进一步将BOAT与Swin和CSWin模型集成,在几个基准数据集上的广泛实验表明,我们的BOAT-CSWin模型清楚且始终优于现有的最先进的CNN模型和vision transformer。


Introduction

继Transformer在自然语言处理任务方面取得巨大成功后,研究人员最近提出了Vision Transformer,在许多计算机视觉任务,包括图像识别、检测和分割中取得了出色的表现。作为Vision Transformer的早期版本,ViT和DeiT将图像统一划分为16 × 16个patches(tokens),并将一堆标准Transformer层应用于使用这些patch形成的token序列。

原始的自注意力机制是全局的,即 ViT 和 DeiT 中的一个patch的感受野覆盖了图像的所有patch,这对于模拟patch之间的远程交互至关重要。 另一方面,self-attention 的全局性对效率提出了很大的挑战。 具体来说,self-attention 的计算复杂度是补丁数量的二次方。 由于当输入图像的大小固定时,补丁的数量与补丁大小成反比,计算成本迫使 ViT 和 DeiT 采用中等大小的补丁,这可能不如小的patch生成更高分辨率特征图有效,尤其适用于分割等密集预测任务。

为了保持更高分辨率的特征图,同时实现高效率,一些方法利用图像空间局部注意。它们将一幅图像分成多个局部窗口,每个窗口都包含一些patch。自我注意操作只对同一本地窗口内的patch执行。这是一种合理的设计,因为一个patch很可能与同一本地窗口中的其他patch关联,但与其他窗口中的patch的相关性不高。因此,减少来自不同窗口的patch之间的关注可能不会显著降低性能。同时,基于窗口的自我注意算法在整个图像上的计算成本远低于原始的自我注意算法。Swin Transformer和Twins就是这样的例子。Swin Transformer在本地窗口中执行自我注意。为了方便来自不同窗口的patch之间的通信,Swin Transformer有两个互补的窗口划分方案,一个方案中的一个窗口与第二个方案中的多个窗口重叠。Twins在局部窗口内执行自我注意,并通过使用规则子抽样模式对从整个图像稀疏采样的特征向量执行(全局)自我注意,在不同窗口之间建立连接。

在这项工作中,我们重新思考local attention,从更广阔的视角探索局部性。具体来说,我们除了图像空间对应物外,还研究了特征空间局部注意力。特征空间局部注意力不是在图像空间中计算局部自注意力,而是利用特征空间中的局部性。 它基于这样一个事实,即在特征空间中彼此接近的patch特征向量在计算的自注意力结果中往往对彼此有更大的影响。这是因为一个特征向量对另一个特征向量的自注意力结果的实际贡献是由这两个特征向量之间的相似性控制的。特征空间局部注意仅利用特征空间最近的特征向量计算自我注意的结果,而将较远的特征向量的贡献值设为零。这本质上定义了一个分段相似函数,它将相距很远的特征向量之间的相似性限制为零。与前面提到的图像空间局部注意相比,特征空间局部注意在vision transformer中很少被利用。如图1所示,特征空间local attention计算的是图像平面上可能相距不太近的相关patch之间的注意力。因此,这是对图像空间局部关注的一种自然补偿,它可能会错过驻留在不同本地窗口中的patch之间的有意义的连接。

在本文中,我们提出了一种新颖的vision transformer结构:双边局部注意vision transformer (BOAT),以利用特征空间和图像空间局部注意之间的互补性。在我们的网络结构中,双边局部注意块是必不可少的组成部分,它由特征空间局部注意模块和图像空间局部注意模块组成。图像空间局部注意模块将一幅图像划分为多个局部窗口,分别为Swin和CSWin,在每个局部窗口内计算自我注意。而特征空间局部注意则将所有patch分成多个簇,在每个簇内进行自我注意计算。利用K-means聚类可以直接实现特征空间的局部注意。然而,K-means聚类不能确保生成的聚类大小均匀,这使得高效的并行实现变得具有挑战性。 此外,大小不均的集群也可能对自我注意的整体有效性产生负面影响。 为了克服这个障碍,我们提出了一种层次平衡的聚类方法,它将patch分组为大小相等的集群。

我们在多个计算机视觉任务上进行实验,包括图像分类、语义分割和目标检测。在几个公共基准上的系统实验表明,所提出的BOAT清晰且持续地改善了现有的图像空间局部注意vision transformer,包括Swin和CSWin在这些任务上。


Method

如图2所示,本文提出的BOAT体系结构由一个patch embedding模块和L个Bilateral Local Attention blocks组成。同时,我们采用了分层金字塔结构。下面我们只简要介绍一下patch embedding模块和分层金字塔结构,关于我们提出的双边局部注意块(Bilateral Local Attention block)的细节请参见3.1和3.2节。


Patch embedding

输入图像大小为H×W,我们遵从Swin和CSwin,利用卷积token embedding(7×7卷积层,stride= 4)得到H/4×W/4的patch tokens,每个token的维度为C。


Hierarchical pyramid structure

与Swin和CSWin Transformer类似,我们也构建了一个层次金字塔结构。整个结构由四个阶段组成,在相邻的两个阶段之间使用一个卷积层(3 × 3, stride=2)来合并patch。它减少了令牌的数量,并使通道的数量增加了一倍。因此,在第i阶段,feature map包含个\frac{H}{2^{i+1}}\times \frac{W}{2^{i+1}} 用\tau _{in}=\left \{ t_{i} \right \}_{i=1}^{N}

Image-space局部注意只在同一个本地窗口内的token之间计算自我注意。我们采用现有的基于窗口的本地关注模块,例如Swin Transformer和CSWin Transformer 中的模块作为ISLA模块,因为它们具有出色的性能。直观地说,同一个本地窗口中的patch很可能是彼此密切相关的。然而,图像空间中的一些遥远的patch也可能揭示重要的联系,比如类似的内容,这可能有助于视觉理解。简单地丢弃图像空间中距离遥远的patch之间的这种连接可能会降低图像识别性能。为了恢复image-space局部注意力丢失的有用信息,我们开发了一个feature-space局部注意力(FSLA)模块。 ISLA 模块的输出\tau _{ISLA}

FSLA模块计算feature-space中接近的token之间的自我注意,与ISLA模块互补。同时,由于只考虑feature-space中的局部注意,FSLA比原来的(全局)自我注意更有效。我们将在第3.2节中介绍FSLA的细节。和CSWin类似,我们还向模型位置的每个特征空间局部注意层添加了局部增强的位置编码

最后,FSLA模块的输出\tau _{ISLA}

遵循现有的Vision Transformer,MLP模块由两个全连接层组成。第一个函数将特征维数从C增加到rC,第二个函数将特征维数从rC减少到C。我们默认设置r = 4。 


3.2 Feature-Space Local Attention

与image-space局部注意力根据其在图像平面中的空间位置对tokens进行分组不同,feature-space局部注意力寻求根据token的内容(即特征)对令牌进行分组。 我们可以简单地对token特征执行 K-means 聚类来实现这一目标。 然而,K-means 聚类不能确保生成的聚类大小相同,这使得在 GPU平台上难以有效地并行实现,并且还可能对self-attention 的整体有效性产生负面影响,这将在我们的消融研究中得到证明。


Balanced hierarchical clustering

为了克服K-means聚类的不平衡问题,我们提出了一种均衡的分层聚类,它执行K级聚类。在每个级别上,它执行一个平衡的二进制集群,将一组token平均地分成两个集群。 用\tau _{in}=\left \{ t_{i} \right \}_{i=1}^{N}


Balanced binary clustering

给定一组2m个tokens\left \{ t_{i} \right \}_{i=1}^{2^{m}}

S(x,y)表示x与y的余弦相似度。2m个tokens\left \{ t_{i} \right \}_{i=1}^{2^{m}}

在上述平衡二值集群中,产生的两个集群没有共享token,即C1∩C2 =∅。非重叠设置的一个主要缺点是,排序列表中间部分的标记在一个集群中有一些特性空间邻居,而其他邻居在另一个集群中。无论这个token最终被分配到哪个集群,该token与其部分特征空间邻居之间的连接都将被切断。例如,排序列表第m个位置的token在注意力计算期间无法与第m+1个位置的token通信,因为它们被分配到不同的集群。

重叠平衡二元聚类通过将排序列表中的前m+n个标记分配给第一个群集来克服这个缺点,即\hat{C_{1}}=\left \{ t_{j1} \right \}_{i=1}^{m+n}

输出\hat{\tau }

按照Transformer中的多头配置,我们还设计了多头特征空间局部注意力。 在我们的多头特征空间局部注意力中,我们实现了多个头,不仅用于计算方程式5中的自注意力作为标准的Transformer,也用于执行平衡的层次聚类。 也就是说,平衡的层次聚类是在每个头中独立执行的。 因此,对于一个特定的token,在不同的heads中,它可能会对不同的token进行基于特征的本地关注。 这种配置比多个头共享同一个本地窗口的Swin更灵活。


Experiments

为了证明我们的BOAT作为通用视觉主干的有效性,我们进行了图像分类、语义分割和目标检测的实验。在百度开发的Paddle平台上进行开发。我们基于最近的两个本地关注的Vision transformer:  Swin和CSWin构建了BOAT。我们把建立在Swin之上的BOAT称为BOAT-Swin。在BOAT-Swin中,图像空间局部注意(ISLA)模块采用了Swin中的移位窗口注意。相比之下,BOAT-CSWin 中的 ISLA 模块在CSWin中使用了十字形窗口注意力。在附录中提供了BOAT-Swin和BOAT-CSWin的规格。 我们将在以下部分介绍主要的实验结果,更多消融研究见附录部分。


Image Classification

如表1所示,随着参数和FLOP数量的轻微增加,我们的 BOAT-Swin 模型在 tiny、small 和 base 设置下不断改进vanilla Swin模型。 具体来说,我们的模型将Swin-Tiny的top-1准确率从 81.3 提高到 82.3,将Swin-Small从83.0提高到83.6,将Swin-Base从83.5提高到83.8。 同时,我们的BOAT-CSWin模型在tiny、small和base设置下也对CSWin模型进行了类似程度的改进。 对Swin和CSWin 的这些改进证明了特征空间局部注意力的有效性。 请注意,我们的 BOAT-CSWin 模型优于现有的 CNN模型和视觉Transformer。 


Semantic Segmentation

如表2所示,随着参数和FLOPs数量的略微增加,我们的BOAT-Swin模型在微小、较小和基本设置下不断提高了Swin模型的语义分割性能。具体来说,Swin-Tiny实现了44.5%的mIoU,而我们的BOAT-SwinTiny实现了46.0%的mIoU。同时,我们的BOAT CSWin模型在tiny、small和base设置下也不断获得比CSWin模型更高的分割 mIoU。 与表 2 中的其他vision transformer相比,我们的 BOAT-CSWin模型在语义分割方面实现了最先进的性能。


Object Detection

我们还评估了提出的BOAT在目标检测方面的应用。使用Mask R-CNN框架在MS-COCO数据集上进行了实验。 我们加载在ImageNet-1K上预训练的 BOAT 模型,以对下游目标检测任务进行微调。 由于CSWin没有发布物体检测的代码,我们只为这个任务实现了BOAT-Swin。 我们采用与 Swin相同的3× 学习率计划。在表3中比较了我们的BOAT-Swin和原始Swin的性能。评估是在 MSCOCO val2017拆分上进行的。由于Swin在使用Mask R-CNN框架时只报告了Swin-Tiny和 Swin-Small模型的性能,因此我们也只报告了我们的BOAT-Swin-Tiny和BOATSwin-Small的性能。 如表 3 所示,随着参数和FLOP数量的轻微增加,我们的BOAT-Swin在tiny和small设置下都优于 Swin。


Conclusion

在本文中,我们提出了一种名为 Bilateral local Attention Transformer (BOAT) 的新 Vision Transformer 架构,它在特征空间和图像空间中执行多头局部自注意力。 为了计算特征空间局部注意力,我们提出了一种分层平衡聚类方法,将patch分组到多个大小均匀的集群中,并在每个集群内计算自注意力。 我们已将BOAT应用于多个计算机视觉任务,包括图像分类、语义分割和对象检测。我们在几个基准数据集上的系统实验表明,BOAT 可以清晰且持续地提高现有图像空间局部注意力视觉 Transformer(包括 Swin 和 CSWin)在这些任务上的性能。


推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • OCR:用字符识别方法将形状翻译成计算机文字的过程Matlab:商业数学软件;CUDA:CUDA™是一种由NVIDIA推 ... [详细]
  • 程度|也就是_论文精读:Neural Architecture Search without Training
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文精读:NeuralArchitectureSearchwithoutTraining相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 用c语言实现线画、填充图元生成算法多边形_【游戏场景剔除】剔除算法综述...
    之前在做场景优化的过程中,看了不少论文和博客阐述不同剔除算法的原理和过程,自己参照着算法去实现了Hiz和软件剔除。一直想写一篇关于剔除算法的综述 ... [详细]
  • Android程序员面试宝典自定义控件一分钟实现贴纸功能一分钟实现TextView高亮一分钟实现新手引导页一分钟实现ViewPager卡片一分钟实现加载对话框一分钟实现轮播图一分钟 ... [详细]
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
  • 深度学习与神经网络——邱锡鹏
    深度学习与神经网络——邱锡鹏-一、绪论人工智能的一个子领域神经网络:一种以(人工))神经元为基本单元的模型深度学习:一类机器学习问题,主要解决贡献度分配问题知识结构:路线图:顶 ... [详细]
author-avatar
夜幕下的猫眼_398
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有